package com.wei.czz.framework.admin.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wei.czz.common.po.RolePo;
import com.wei.czz.framework.admin.entity.UserEntity;
import com.wei.czz.framework.admin.entity.UserRoleEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2021-03-15 10:28:45
 * className: UserRoleDao 用户和角色关联操作请求数据库交互接口
 * version: 1.0
 * description:
 */
public interface UserRoleDao extends BaseMapper<UserRoleEntity> {

    /**
     * 查询角色主键数据
     * 根据用户主键，查询用户关联的角色主键数据
     * @param userId     用户主键
     * @param deleteFlag 删除状态
     */
    List<String> getRoleIdList(@Param("userId") Long userId, @Param("deleteFlag") Integer deleteFlag);

    /**
     * 查询角色主键数据
     * 根据用户主键，查询用户关联的角色主键数据
     * @param userId     用户主键
     * @param deleteFlag 删除状态
     */
    List<Long> findRoleIdList(@Param("userId") Long userId, @Param("deleteFlag") Integer deleteFlag);

    /**
     * 查询用户主键列表
     * 根据角色主键，查询角色关联的用户主键列表
     * @param roleId     角色主键
     * @param deleteFlag 删除状态
     * @return 用户主键列表
     */
    Set<Long> getUserIdSet(@Param("roleId") Long roleId, @Param("deleteFlag") Integer deleteFlag);

    /**
     * 查询角色关联用户列表
     * @param roleId     角色主键
     * @param deleteFlag 删除状态
     * @return 用户列表
     */
    List<UserEntity> selectUserList(@Param("roleId") Long roleId, @Param("deleteFlag") Integer deleteFlag);

    /**
     * 根据用户id，查询用户所有的权限信息
     * @param userId   用户id
     * @param menuType 菜单类型[0-目录 1-页面 2-按钮]
     */
    List<RolePo> selectUserPermitList(@Param("userId") Long userId, @Param("menuType") Integer menuType);

}
